Optimistic Concurrency Control

Database Tutorials - এইচ২ ডাটাবেস (H2 Database) H2 Database এর Multi-Version Concurrency Control (MVCC) |
227
227

Optimistic Concurrency Control (OCC) একটি ডেটাবেজ ট্রানজেকশন ম্যানেজমেন্ট কৌশল যা মূলত ডেটা কনফ্লিক্ট বা লকিং ছাড়াই একাধিক ট্রানজেকশনকে সমান্তরালে চলতে দেয়। এই কৌশলে, প্রতিটি ট্রানজেকশন একটি ডেটা রেকর্ড পড়ে এবং একে পরিবর্তন করার চেষ্টা করে, তবে ট্রানজেকশন শেষ করার আগে অন্য কোনো ট্রানজেকশন যদি একই ডেটা পরিবর্তন করে, তবে প্রথম ট্রানজেকশনটি ব্যর্থ হয়ে যাবে এবং আবার চেষ্টা করতে হবে।

OCC বিশেষভাবে উপকারী যখন হাই কনকারেন্সি (High Concurrency) পরিবেশে কাজ করা হয়, যেখানে একাধিক ইউজার বা অ্যাপ্লিকেশন একযোগে ডেটাবেজ অ্যাক্সেস করে, তবে ডেটার সংঘর্ষ বা কনফ্লিক্ট কম থাকে।


OCC এর কাজ করার পদ্ধতি

OCC তিনটি প্রধান পর্যায়ে কাজ করে:

  1. Read Phase (পড়ার পর্যায়):
    ট্রানজেকশন শুরু হওয়ার পর, এটি একটি বা একাধিক ডেটা রেকর্ড পড়ে, তবে তা কোনও লকিং ছাড়াই। এটি সাধারণত দ্রুত এবং কম খরচে করা হয়।
  2. Validation Phase (যাচাই পর্যায়):
    ট্রানজেকশন যখন শেষ হতে চলেছে, তখন সিস্টেমটি যাচাই করে দেখতে পারে যে, অন্য কোন ট্রানজেকশন এই একই রেকর্ডে কোনো পরিবর্তন করেছে কি না। এই পর্যায়ে, এটি অন্যান্য ট্রানজেকশনগুলোর সাথে সংঘর্ষ সনাক্ত করে। যদি অন্য কোনো ট্রানজেকশন একই রেকর্ডে পরিবর্তন করে, তবে বর্তমান ট্রানজেকশনটি ব্যর্থ হয়ে যাবে।
  3. Write Phase (লিখার পর্যায়):
    যদি কোনো কনফ্লিক্ট না থাকে, তবে ট্রানজেকশনটি রেকর্ডে পরিবর্তন করবে এবং সেই পরিবর্তন ডেটাবেজে কমিট হবে। যদি কনফ্লিক্ট থাকে, তবে ট্রানজেকশনটি রোলব্যাক হয়ে যাবে এবং আবার চেষ্টা করতে হবে।

OCC এর প্রধান বৈশিষ্ট্য

  1. কম লকিং:
    OCC কম লকিং ব্যবহার করে, যার মানে হল যে একাধিক ট্রানজেকশন একই সময়ে ডেটা অ্যাক্সেস করতে পারে এবং একে অপরকে ব্লক বা আটকে রাখতে হবে না।
  2. প্রথমে পড়া, পরে লেখা:
    ট্রানজেকশনগুলি প্রথমে ডেটা পড়ে এবং তারপর লিখে। তাই এটি প্রাথমিকভাবে বেশি কার্যকরী হতে পারে, যেহেতু বেশিরভাগ ট্রানজেকশন শেষে কোনো পরিবর্তন না করেও শেষ হয়ে যেতে পারে।
  3. কম কনফ্লিক্ট:
    যদি ডেটাবেজে কনফ্লিক্ট বা সংঘর্ষ কম থাকে, OCC কার্যকরী হতে পারে। এটি এমন পরিস্থিতিতে বেশি উপকারী যেখানে অনেক ট্রানজেকশন একই ডেটাতে কাজ করছে না।
  4. রোলব্যাক:
    যদি কোন কনফ্লিক্ট হয়, তখন সংশ্লিষ্ট ট্রানজেকশন রোলব্যাক হয়ে যায় এবং পুনরায় ট্রাই করা হয়।

OCC এর সুবিধা

  1. পারফরম্যান্স বৃদ্ধি:
    OCC ট্রানজেকশনগুলির মধ্যে লকিং এড়াতে পারে, যার ফলে বেশি ট্রানজেকশন একযোগে কাজ করতে পারে, ফলে পারফরম্যান্স বৃদ্ধি পায়।
  2. কম রিসোর্স ব্যবহার:
    লকিং না হওয়ায় সিস্টেমের মধ্যে কম রিসোর্স ব্যবহৃত হয়, বিশেষ করে যখন ট্রানজেকশনগুলির মধ্যে লম্বা সময় ধরে সংঘর্ষের সম্ভাবনা থাকে না।
  3. ডিস্ট্রিবিউটেড সিস্টেমের জন্য উপযুক্ত:
    OCC ডিস্ট্রিবিউটেড সিস্টেমে ভাল কাজ করে, যেখানে বিভিন্ন সার্ভার বা ক্লায়েন্টে একাধিক ট্রানজেকশন চালানো হয়।

OCC এর সীমাবদ্ধতা

  1. কনফ্লিক্ট বৃদ্ধি:
    যদি সিস্টেমে অনেক ট্রানজেকশন থাকে এবং ডেটার মধ্যে সংঘর্ষের সম্ভাবনা বেশি থাকে, তবে OCC এর কার্যকারিতা হ্রাস পাবে। কারণ কনফ্লিক্ট হওয়ার ফলে ট্রানজেকশন রোলব্যাক হতে পারে এবং এটি পারফরম্যান্সকে কমিয়ে দিতে পারে।
  2. রোলব্যাক এবং পুনরায় চেষ্টা:
    যদি একটি ট্রানজেকশন ব্যর্থ হয়, তাহলে তাকে পুনরায় চেষ্টা করতে হতে পারে, যা সময় নষ্ট করে। বিশেষত যখন কনফ্লিক্টের সম্ভাবনা বেশি থাকে।
  3. সিস্টেম কমপ্লেক্সিটি:
    OCC কৌশল ব্যবহার করার জন্য সিস্টেমের মধ্যে আরও কমপ্লেক্স লজিক এবং কার্যকরী ভ্যালিডেশন প্রয়োজন হতে পারে।

OCC এর ব্যবহার কেস

ব্যাংকিং অ্যাপ্লিকেশন:
OCC ব্যবহৃত হতে পারে ব্যাংকিং অ্যাপ্লিকেশনে, যেখানে একাধিক ট্রানজেকশন একসাথে একই অ্যাকাউন্টে পরিবর্তন করতে পারে, তবে একে অপরের সাথে সংঘর্ষ না হলে এটি কার্যকর হবে। উদাহরণস্বরূপ, দুটি ইউজার যদি একই অ্যাকাউন্ট থেকে টাকা তুলে, তবে OCC নিশ্চিত করবে যে প্রথম ট্রানজেকশন শেষ না হওয়া পর্যন্ত দ্বিতীয় ট্রানজেকশনটি সম্পন্ন হবে না।

ই-কমার্স সিস্টেম:
যদি একাধিক ইউজার একসাথে একই প্রোডাক্ট কেনার চেষ্টা করেন, তবে OCC তাদের মধ্যে কোনো কনফ্লিক্ট সৃষ্টি না করেই তাদের অর্ডার প্রক্রিয়া শেষ করতে পারে।


OCC এর উদাহরণ

ধরা যাক, দুইজন ইউজার একই সময়ে একটি অ্যাকাউন্ট থেকে টাকা তুলে নেওয়ার চেষ্টা করছে:

  1. User 1 এবং User 2 একই অ্যাকাউন্ট থেকে টাকা তোলার চেষ্টা করল।
  2. তারা তাদের নিজ নিজ অ্যাকাউন্ট ডেটা পড়ল এবং দেখা গেল যে যথেষ্ট টাকা আছে।
  3. User 1 তার টাকা সফলভাবে তুলল এবং কমিট করল।
  4. User 2 তার টাকা তুলতে গিয়ে দেখতে পেল যে তার অ্যাকাউন্টে যথেষ্ট টাকা নেই, কারণ User 1 প্রথমে টাকা তুলেছিল।

এইভাবে, OCC Isolation নিশ্চিত করে এবং Concurrency সমস্যাগুলি সমাধান করতে সহায়ক।


উপসংহার

Optimistic Concurrency Control (OCC) হল একটি শক্তিশালী কৌশল যা কম লকিং এবং ট্রানজেকশনগুলির মধ্যে কম সংঘর্ষের পরিস্থিতিতে অত্যন্ত কার্যকর। এটি উচ্চ পারফরম্যান্স এবং সহজ পরিচালনার সুবিধা প্রদান করে, তবে একাধিক ট্রানজেকশনের মধ্যে সংঘর্ষের সম্ভাবনা থাকলে কিছু চ্যালেঞ্জ সৃষ্টি হতে পারে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion